//
// Created by 啊汤哥 on 2025/6/28.
//
#define MaxSize 100
struct  TreeNode {
    int value;
    bool isEmpty;
};
// 定义一个长度为 MaxSize 的数组 t ，按照
// 从上至下、从左至右的顺序依次存储完全二叉树中的各个结点
TreeNode t[MaxSize];

// 初始话二叉树 让各个节点为空
void initTree() {
    for (int i = 0; i < MaxSize; i++) {
        t[i].isEmpty = true;
    }
}

// 插入节点
bool InsertTree(int index, int value) {
    if (index < 0 || index >= MaxSize) {
        return false; // 超出范围
    }
    if (!t[value].isEmpty) {
        return false; // 存储空间满了 位置被占用
    }
    // 插入新的节点 然后要设置为空值
    t[index].value = value;
    t[index].isEmpty = false;
    return true;
}

// 获取左孩子
int GetLeftChild(int index) {
    return 2 * index +1;
}

// 获取右孩子
int GetRightChild(int index) {
    return 2 * index +2;
}

// 获取父节点
int GetHeadChild(int index) {
    return index / 2;
}